
module.exports.TRADETRUST_ERC721_ADDRESS = "0x5bB16760aEC0A86f5FFF42d9825DEAcE7B319c57";

module.exports.TRADETRUST_ERC721_ABI = [{
    inputs: [{
      internalType: "string",
      name: "name",
      type: "string"
    }, {
      internalType: "string",
      name: "symbol",
      type: "string"
    }],
    payable: false,
    stateMutability: "nonpayable",
    type: "constructor"
  }, {
    anonymous: false,
    inputs: [{
      indexed: true,
      internalType: "address",
      name: "owner",
      type: "address"
    }, {
      indexed: true,
      internalType: "address",
      name: "approved",
      type: "address"
    }, {
      indexed: true,
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "Approval",
    type: "event"
  }, {
    anonymous: false,
    inputs: [{
      indexed: true,
      internalType: "address",
      name: "owner",
      type: "address"
    }, {
      indexed: true,
      internalType: "address",
      name: "operator",
      type: "address"
    }, {
      indexed: false,
      internalType: "bool",
      name: "approved",
      type: "bool"
    }],
    name: "ApprovalForAll",
    type: "event"
  }, {
    anonymous: false,
    inputs: [{
      indexed: true,
      internalType: "address",
      name: "account",
      type: "address"
    }],
    name: "MinterAdded",
    type: "event"
  }, {
    anonymous: false,
    inputs: [{
      indexed: true,
      internalType: "address",
      name: "account",
      type: "address"
    }],
    name: "MinterRemoved",
    type: "event"
  }, {
    anonymous: false,
    inputs: [{
      indexed: true,
      internalType: "address",
      name: "escrowAddress",
      type: "address"
    }, {
      indexed: true,
      internalType: "address",
      name: "tokenRegistry",
      type: "address"
    }, {
      indexed: false,
      internalType: "address",
      name: "beneficiary",
      type: "address"
    }, {
      indexed: false,
      internalType: "address",
      name: "holder",
      type: "address"
    }],
    name: "TitleEscrowDeployed",
    type: "event"
  }, {
    anonymous: false,
    inputs: [{
      indexed: true,
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "TokenBurnt",
    type: "event"
  }, {
    anonymous: false,
    inputs: [{
      indexed: true,
      internalType: "address",
      name: "operator",
      type: "address"
    }, {
      indexed: true,
      internalType: "address",
      name: "from",
      type: "address"
    }, {
      indexed: true,
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }, {
      indexed: false,
      internalType: "bytes",
      name: "data",
      type: "bytes"
    }],
    name: "TokenReceived",
    type: "event"
  }, {
    anonymous: false,
    inputs: [{
      indexed: true,
      internalType: "address",
      name: "from",
      type: "address"
    }, {
      indexed: true,
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      indexed: true,
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "Transfer",
    type: "event"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "account",
      type: "address"
    }],
    name: "addMinter",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "approve",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "address",
      name: "owner",
      type: "address"
    }],
    name: "balanceOf",
    outputs: [{
      internalType: "uint256",
      name: "",
      type: "uint256"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "tokenRegistry",
      type: "address"
    }, {
      internalType: "address",
      name: "beneficiary",
      type: "address"
    }, {
      internalType: "address",
      name: "holder",
      type: "address"
    }],
    name: "deployNewTitleEscrow",
    outputs: [{
      internalType: "address",
      name: "",
      type: "address"
    }],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "getApproved",
    outputs: [{
      internalType: "address",
      name: "",
      type: "address"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "address",
      name: "owner",
      type: "address"
    }, {
      internalType: "address",
      name: "operator",
      type: "address"
    }],
    name: "isApprovedForAll",
    outputs: [{
      internalType: "bool",
      name: "",
      type: "bool"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "address",
      name: "account",
      type: "address"
    }],
    name: "isMinter",
    outputs: [{
      internalType: "bool",
      name: "",
      type: "bool"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "mint",
    outputs: [{
      internalType: "bool",
      name: "",
      type: "bool"
    }],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: true,
    inputs: [],
    name: "name",
    outputs: [{
      internalType: "string",
      name: "",
      type: "string"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "ownerOf",
    outputs: [{
      internalType: "address",
      name: "",
      type: "address"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: false,
    inputs: [],
    name: "renounceMinter",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }, {
      internalType: "bytes",
      name: "_data",
      type: "bytes"
    }],
    name: "safeMint",
    outputs: [{
      internalType: "bool",
      name: "",
      type: "bool"
    }],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "safeMint",
    outputs: [{
      internalType: "bool",
      name: "",
      type: "bool"
    }],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "from",
      type: "address"
    }, {
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "safeTransferFrom",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "from",
      type: "address"
    }, {
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }, {
      internalType: "bytes",
      name: "_data",
      type: "bytes"
    }],
    name: "safeTransferFrom",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "bool",
      name: "approved",
      type: "bool"
    }],
    name: "setApprovalForAll",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "bytes4",
      name: "interfaceId",
      type: "bytes4"
    }],
    name: "supportsInterface",
    outputs: [{
      internalType: "bool",
      name: "",
      type: "bool"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: true,
    inputs: [],
    name: "symbol",
    outputs: [{
      internalType: "string",
      name: "",
      type: "string"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "uint256",
      name: "index",
      type: "uint256"
    }],
    name: "tokenByIndex",
    outputs: [{
      internalType: "uint256",
      name: "",
      type: "uint256"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "address",
      name: "owner",
      type: "address"
    }, {
      internalType: "uint256",
      name: "index",
      type: "uint256"
    }],
    name: "tokenOfOwnerByIndex",
    outputs: [{
      internalType: "uint256",
      name: "",
      type: "uint256"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: true,
    inputs: [{
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "tokenURI",
    outputs: [{
      internalType: "string",
      name: "",
      type: "string"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: true,
    inputs: [],
    name: "totalSupply",
    outputs: [{
      internalType: "uint256",
      name: "",
      type: "uint256"
    }],
    payable: false,
    stateMutability: "view",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "from",
      type: "address"
    }, {
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "uint256",
      name: "tokenId",
      type: "uint256"
    }],
    name: "transferFrom",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "_operator",
      type: "address"
    }, {
      internalType: "address",
      name: "_from",
      type: "address"
    }, {
      internalType: "uint256",
      name: "_tokenId",
      type: "uint256"
    }, {
      internalType: "bytes",
      name: "_data",
      type: "bytes"
    }],
    name: "onERC721Received",
    outputs: [{
      internalType: "bytes4",
      name: "",
      type: "bytes4"
    }],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "uint256",
      name: "_tokenId",
      type: "uint256"
    }],
    name: "destroyToken",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "beneficiary",
      type: "address"
    }, {
      internalType: "address",
      name: "holder",
      type: "address"
    }, {
      internalType: "uint256",
      name: "_tokenId",
      type: "uint256"
    }],
    name: "sendToNewTitleEscrow",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }, {
    constant: false,
    inputs: [{
      internalType: "address",
      name: "to",
      type: "address"
    }, {
      internalType: "uint256",
      name: "_tokenId",
      type: "uint256"
    }],
    name: "sendToken",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  }];

  module.exports.TRADETRUST_ERC721_BIN = "0x60806040523480156200001157600080fd5b50604051620040b6380380620040b6833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040525083915082905081818181620001c26301ffc9a760e01b6001600160e01b036200029116565b620001dd6380ac58cd60e01b6001600160e01b036200029116565b62000203620001f46001600160e01b036200031616565b6001600160e01b036200031b16565b6200021e63780e9d6360e01b6001600160e01b036200029116565b81516200023390600a90602085019062000463565b5080516200024990600b90602084019062000463565b5062000265635b5e139f60e01b6001600160e01b036200029116565b50620002899450639f9e69f360e01b9350506001600160e01b036200029116915050565b505062000505565b6001600160e01b03198082161415620002f1576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b335b90565b620003368160056200036d60201b62001e491790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200038282826001600160e01b03620003fa16565b15620003d5576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620004435760405162461bcd60e51b8152600401808060200182810382526022815260200180620040946022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004a657805160ff1916838001178555620004d6565b82800160010185558215620004d6579182015b82811115620004d6578251825591602001919060010190620004b9565b50620004e4929150620004e8565b5090565b6200031891905b80821115620004e45760008155600101620004ef565b613b7f80620005156000396000f3fe60806040523480156200001157600080fd5b5060043610620001d25760003560e01c80636352211e1162000111578063a144819411620000a5578063b88d4fde116200007b578063b88d4fde1462000751578063c87b56dd146200081d578063e985e9c5146200083d578063fcd7c1df146200086e57620001d2565b8063a144819414620006c8578063a22cb46514620006f7578063aa271e1a146200072857620001d2565b80638a7d124b11620000e75780638a7d124b146200066b57806395d89b41146200068b578063983b2d5614620006955780639865027514620006be57620001d2565b80636352211e146200056157806370a0823114620005815780638832e6e314620005aa57620001d2565b806323b872dd1162000189578063412664ae116200015f578063412664ae14620004a057806341ce651414620004cf57806342842e0e14620005085780634f6ccce7146200054157620001d2565b806323b872dd14620004095780632f745c59146200044257806340c10f19146200047157620001d2565b806301ffc9a714620001d757806306fdde031462000215578063081812fc1462000297578063095ea7b314620002d3578063150b7a02146200030457806318160ddd14620003ed575b600080fd5b6200020160048036036020811015620001ef57600080fd5b50356001600160e01b031916620008a9565b604080519115158252519081900360200190f35b6200021f620008c8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200025b57818101518382015260200162000241565b50505050905090810190601f168015620002895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002b760048036036020811015620002af57600080fd5b503562000963565b604080516001600160a01b039092168252519081900360200190f35b6200030260048036036040811015620002eb57600080fd5b506001600160a01b038135169060200135620009c9565b005b620003d0600480360360808110156200031c57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156200035857600080fd5b8201836020820111156200036b57600080fd5b803590602001918460018302840111640100000000831117156200038e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062000afe945050505050565b604080516001600160e01b03199092168252519081900360200190f35b620003f762000bc3565b60408051918252519081900360200190f35b62000302600480360360608110156200042157600080fd5b506001600160a01b0381358116916020810135909116906040013562000bc9565b620003f7600480360360408110156200045a57600080fd5b506001600160a01b03813516906020013562000c2d565b62000201600480360360408110156200048957600080fd5b506001600160a01b03813516906020013562000cb1565b6200030260048036036040811015620004b857600080fd5b506001600160a01b03813516906020013562000d19565b6200030260048036036060811015620004e757600080fd5b506001600160a01b0381358116916020810135909116906040013562000de2565b62000302600480360360608110156200052057600080fd5b506001600160a01b0381358116916020810135909116906040013562000ede565b620003f7600480360360208110156200055957600080fd5b503562000efb565b620002b7600480360360208110156200057957600080fd5b503562000f66565b620003f7600480360360208110156200059957600080fd5b50356001600160a01b031662000fc2565b6200020160048036036060811015620005c257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135640100000000811115620005f357600080fd5b8201836020820111156200060657600080fd5b803590602001918460018302840111640100000000831117156200062957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200102e945050505050565b62000302600480360360208110156200068357600080fd5b503562001092565b6200021f62001187565b6200030260048036036020811015620006ad57600080fd5b50356001600160a01b0316620011eb565b6200030262001244565b6200020160048036036040811015620006e057600080fd5b506001600160a01b0381351690602001356200125a565b62000302600480360360408110156200070f57600080fd5b506001600160a01b0381351690602001351515620012b3565b62000201600480360360208110156200074057600080fd5b50356001600160a01b0316620013bf565b62000302600480360360808110156200076957600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135640100000000811115620007a557600080fd5b820183602082011115620007b857600080fd5b80359060200191846001830284011164010000000083111715620007db57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620013d4945050505050565b6200021f600480360360208110156200083557600080fd5b503562001434565b62000201600480360360408110156200085557600080fd5b506001600160a01b038135811691602001351662001521565b620002b7600480360360608110156200088657600080fd5b506001600160a01b0381358116916020810135821691604090910135166200154f565b6001600160e01b03191660009081526020819052604090205460ff1690565b600a8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620009585780601f106200092c5761010080835404028352916020019162000958565b820191906000526020600020905b8154815290600101906020018083116200093a57829003601f168201915b505050505090505b90565b6000620009708262001603565b620009ad5760405162461bcd60e51b815260040180806020018281038252602c815260200180620039f3602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000620009d68262000f66565b9050806001600160a01b0316836001600160a01b0316141562000a2b5760405162461bcd60e51b815260040180806020018281038252602181526020018062003a996021913960400191505060405180910390fd5b806001600160a01b031662000a3f62001620565b6001600160a01b0316148062000a65575062000a658162000a5f62001620565b62001521565b62000aa25760405162461bcd60e51b8152600401808060200182810382526038815260200180620039176038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600082846001600160a01b0316866001600160a01b03167f5343d39c46825e39cfee854256354ed1b3837af99997a3242ae29e831889773c856040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000b7657818101518382015260200162000b5c565b50505050905090810190601f16801562000ba45780820380516001836020036101000a031916815260200191505b509250505060405180910390a450630a85bd0160e11b5b949350505050565b60085490565b62000bde62000bd762001620565b8262001624565b62000c1b5760405162461bcd60e51b815260040180806020018281038252603181526020018062003aee6031913960400191505060405180910390fd5b62000c28838383620016cc565b505050565b600062000c3a8362000fc2565b821062000c795760405162461bcd60e51b815260040180806020018281038252602b81526020018062003833602b913960400191505060405180910390fd5b6001600160a01b038316600090815260066020526040902080548390811062000c9e57fe5b9060005260206000200154905092915050565b600062000cc762000cc162001620565b620013bf565b62000d045760405162461bcd60e51b8152600401808060200182810382526030815260200180620039a26030913960400191505060405180910390fd5b62000d108383620016f1565b50600192915050565b62000d2762000cc162001620565b62000d645760405162461bcd60e51b8152600401808060200182810382526030815260200180620039a26030913960400191505060405180910390fd5b3062000d708262000f66565b6001600160a01b03161462000db75760405162461bcd60e51b815260040180806020018281038252603481526020018062003aba6034913960400191505060405180910390fd5b62000dde62000dc68262000f66565b83836040518060200160405280600081525062001714565b5050565b62000df062000cc162001620565b62000e2d5760405162461bcd60e51b8152600401808060200182810382526030815260200180620039a26030913960400191505060405180910390fd5b6040805163fcd7c1df60e01b815230600482018190526001600160a01b0386811660248401528516604483015291516000929163fcd7c1df91606480830192602092919082900301818787803b15801562000e8757600080fd5b505af115801562000e9c573d6000803e3d6000fd5b505050506040513d602081101562000eb357600080fd5b505160408051602081019091526000815290915062000ed89030908390859062001714565b50505050565b62000c2883838360405180602001604052806000815250620013d4565b600062000f0762000bc3565b821062000f465760405162461bcd60e51b815260040180806020018281038252602c81526020018062003b1f602c913960400191505060405180910390fd5b6008828154811062000f5457fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168062000fbc5760405162461bcd60e51b8152600401808060200182810382526029815260200180620039796029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166200100b5760405162461bcd60e51b815260040180806020018281038252602a8152602001806200394f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902062000fbc906200176c565b60006200103e62000cc162001620565b6200107b5760405162461bcd60e51b8152600401808060200182810382526030815260200180620039a26030913960400191505060405180910390fd5b6200108884848462001770565b5060019392505050565b620010a062000cc162001620565b620010dd5760405162461bcd60e51b8152600401808060200182810382526030815260200180620039a26030913960400191505060405180910390fd5b30620010e98262000f66565b6001600160a01b031614620011305760405162461bcd60e51b8152600401808060200182810382526037815260200180620038906037913960400191505060405180910390fd5b620011596200113f8262000f66565b61dead836040518060200160405280600081525062001714565b60405181907ff20b2822e5b23bbd8f6a8403d33b35d15c70c1b08311f66ab320995806ebbcf090600090a250565b600b8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620009585780601f106200092c5761010080835404028352916020019162000958565b620011f962000cc162001620565b620012365760405162461bcd60e51b8152600401808060200182810382526030815260200180620039a26030913960400191505060405180910390fd5b6200124181620017c8565b50565b620012586200125262001620565b62001812565b565b60006200126a62000cc162001620565b620012a75760405162461bcd60e51b8152600401808060200182810382526030815260200180620039a26030913960400191505060405180910390fd5b62000d1083836200185c565b620012bd62001620565b6001600160a01b0316826001600160a01b0316141562001324576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80600460006200133362001620565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556200137962001620565b60408051841515815290516001600160a01b0392909216917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a35050565b600062000fbc60058363ffffffff6200187816565b620013e9620013e262001620565b8362001624565b620014265760405162461bcd60e51b815260040180806020018281038252603181526020018062003aee6031913960400191505060405180910390fd5b62000ed88484848462001714565b6060620014418262001603565b6200147e5760405162461bcd60e51b815260040180806020018281038252602f81526020018062003a6a602f913960400191505060405180910390fd5b6000828152600c602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015620015155780601f10620014e95761010080835404028352916020019162001515565b820191906000526020600020905b815481529060010190602001808311620014f757829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b600080848484306040516200156490620020b4565b6001600160a01b039485168152928416602084015290831660408084019190915292166060820152905190819003608001906000f080158015620015ac573d6000803e3d6000fd5b50604080516001600160a01b0387811682528681166020830152825193945080891693908516927fe2f3f566784bdc646f1c93b8081e3a6ba18cf31fb9f2540aa0e2988954dffccb928290030190a3949350505050565b6000908152600160205260409020546001600160a01b0316151590565b3390565b6000620016318262001603565b6200166e5760405162461bcd60e51b815260040180806020018281038252602c815260200180620038eb602c913960400191505060405180910390fd5b60006200167b8362000f66565b9050806001600160a01b0316846001600160a01b03161480620016b95750836001600160a01b0316620016ae8462000963565b6001600160a01b0316145b8062000bbb575062000bbb818562001521565b620016d9838383620018e1565b620016e5838262001a31565b62000c28828262001b2d565b620016fd828262001b6b565b62001709828262001b2d565b62000dde8162001ca2565b62001721848484620016cc565b6200172f8484848462001ce6565b62000ed85760405162461bcd60e51b81526004018080602001828103825260328152602001806200385e6032913960400191505060405180910390fd5b5490565b6200177c8383620016f1565b6200178b600084848462001ce6565b62000c285760405162461bcd60e51b81526004018080602001828103825260328152602001806200385e6032913960400191505060405180910390fd5b620017db60058263ffffffff62001e4916565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200182560058263ffffffff62001ecd16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b62000dde82826040518060200160405280600081525062001770565b60006001600160a01b038216620018c15760405162461bcd60e51b815260040180806020018281038252602281526020018062003a1f6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b826001600160a01b0316620018f68262000f66565b6001600160a01b0316146200193d5760405162461bcd60e51b815260040180806020018281038252602981526020018062003a416029913960400191505060405180910390fd5b6001600160a01b038216620019845760405162461bcd60e51b8152600401808060200182810382526024815260200180620038c76024913960400191505060405180910390fd5b6200198f8162001f38565b6001600160a01b0383166000908152600360205260409020620019b29062001f74565b6001600160a01b0382166000908152600360205260409020620019d59062001f8d565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821660009081526006602052604081205462001a5d90600163ffffffff62001f9616565b60008381526007602052604090205490915080821462001afb576001600160a01b038416600090815260066020526040812080548490811062001a9c57fe5b906000526020600020015490508060066000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811062001adb57fe5b600091825260208083209091019290925591825260079052604090208190555b6001600160a01b038416600090815260066020526040902080549062001b26906000198301620020c2565b5050505050565b6001600160a01b0390911660009081526006602081815260408084208054868652600784529185208290559282526001810183559183529091200155565b6001600160a01b03821662001bc7576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b62001bd28162001603565b1562001c25576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526003909152902062001c669062001f8d565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b600062001cfc846001600160a01b031662001fe1565b62001d0a5750600162000bbb565b6000846001600160a01b031663150b7a0262001d2562001620565b8887876040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562001dac57818101518382015260200162001d92565b50505050905090810190601f16801562001dda5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801562001dfd57600080fd5b505af115801562001e12573d6000803e3d6000fd5b505050506040513d602081101562001e2957600080fd5b50516001600160e01b031916630a85bd0160e11b14915050949350505050565b62001e55828262001878565b1562001ea8576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b62001ed9828262001878565b62001f165760405162461bcd60e51b8152600401808060200182810382526021815260200180620039d26021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b0316156200124157600090815260026020526040902080546001600160a01b0319169055565b805462001f8990600163ffffffff62001f9616565b9055565b80546001019055565b600062001fda83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062002019565b9392505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470811580159062000bbb5750141592915050565b60008184841115620020ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200207057818101518382015260200162002056565b50505050905090810190601f1680156200209e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b61172e806200210583390190565b81548183558181111562000c285760008381526020902062000c289181019083016200096091905b80821115620021005760008155600101620020ea565b509056fe60806040526003805460ff1916905534801561001a57600080fd5b5060405161172e38038061172e8339818101604052608081101561003d57600080fd5b5080516020820151604080840151606090940151600080546001600160a01b038086166001600160a01b031992831617835560018054918916919092168117909155925194959394919284929091907f076c2af751a37d3871addf9a6fdedbaf3827fb030bf1d04c43a1421420fcc987908290a3506100cb6301ffc9a760e01b6001600160e01b0361012316565b60038054610100600160a81b0319166101006001600160a01b038781169190910291909117909155600580546001600160a01b03191691831691909117905561011a63dcce221160e01b610123565b505050506101a7565b6001600160e01b03198082161415610182576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b611578806101b66000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806338af3eed11610097578063a03fa7e311610066578063a03fa7e3146102f3578063d4b5661014610319578063e366ab3014610321578063e534155d1461034f57610100565b806338af3eed1461028f5780635a87db751461029757806374bbb350146102bd5780639d23c4c7146102eb57610100565b80631fe2b08a116100d35780631fe2b08a14610239578063200d2ed214610241578063248225141461026d578063325689f91461028757610100565b806301ffc9a71461010557806303f0736d146101405780630cb258b714610168578063150b7a021461018c575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b031916610357565b604080519115158252519081900360200190f35b6101666004803603602081101561015657600080fd5b50356001600160a01b0316610376565b005b610170610568565b604080516001600160a01b039092168252519081900360200190f35b61021c600480360360808110156101a257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156101dd57600080fd5b8201836020820111156101ef57600080fd5b8035906020019184600183028401116401000000008311171561021157600080fd5b509092509050610577565b604080516001600160e01b03199092168252519081900360200190f35b6101706106a1565b6102496106b0565b6040518082600281111561025957fe5b60ff16815260200191505060405180910390f35b6102756106b9565b60408051918252519081900360200190f35b6101706106bf565b6101706106ce565b610166600480360360208110156102ad57600080fd5b50356001600160a01b03166106dd565b610166600480360360408110156102d357600080fd5b506001600160a01b038135811691602001351661087d565b610170610bf5565b6101666004803603602081101561030957600080fd5b50356001600160a01b0316610c09565b610170610e54565b6101666004803603604081101561033757600080fd5b506001600160a01b0381358116916020013516610e63565b6101706110ef565b6001600160e01b03191660009081526002602052604090205460ff1690565b6004546103b45760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff1660028111156103c757fe5b146104035760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b15801561045657600080fd5b505afa15801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b50516001600160a01b0316146104c75760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b6104cf6110fe565b61050a5760405162461bcd60e51b81526004018080602001828103825260428152602001806114596042913960600191505060405180910390fd5b600080546004546040516001600160a01b03808616949316927fd728b6f1bea0a163413b81fbf7301d4a193de3b5565105255108cdec8b2acddb91a4600880546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031681565b60008060035460ff16600281111561058b57fe5b146105c75760405162461bcd60e51b815260040180806020018281038252602a81526020018061151a602a913960400191505060405180910390fd5b60035461010090046001600160a01b03166105e0611122565b6001600160a01b0316146106255760405162461bcd60e51b81526004018080602001828103825260478152602001806114d36047913960600191505060405180910390fd5b6004849055836001600160a01b03861661063d611122565b6001600160a01b03167f01fcbb5289f65a5306cb0d0c6a79f53f0c1c0b245a042e3565e30c0e6104e24060405160405180910390a46003805460ff1916600117905560405180602f6112a9823960405190819003602f019020979650505050505050565b6008546001600160a01b031681565b60035460ff1681565b60045481565b6005546001600160a01b031681565b6000546001600160a01b031681565b60045461071b5760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff16600281111561072e57fe5b1461076a5760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d60208110156107e757600080fd5b50516001600160a01b03161461082e5760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b610836611126565b6108715760405162461bcd60e51b815260040180806020018281038252603381526020018061135c6033913960400191505060405180910390fd5b61087a8161113d565b50565b6004546108bb5760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff1660028111156108ce57fe5b1461090a5760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b15801561095d57600080fd5b505afa158015610971573d6000803e3d6000fd5b505050506040513d602081101561098757600080fd5b50516001600160a01b0316146109ce5760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b6109d6611126565b610a115760405162461bcd60e51b815260040180806020018281038252603381526020018061135c6033913960400191505060405180910390fd5b81816001600160a01b038216610a585760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b6001600160a01b038116610a9d5760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b6000546001546001600160a01b03908116911614610b4d576006546001600160a01b03838116911614610b015760405162461bcd60e51b815260040180806020018281038252603d8152602001806113b2603d913960400191505060405180910390fd5b6007546001600160a01b03828116911614610b4d5760405162461bcd60e51b815260040180806020018281038252603881526020018061149b6038913960400191505060405180910390fd5b6005546003546040805163fcd7c1df60e01b81526101009092046001600160a01b039081166004840152878116602484015286811660448401529051600093919091169163fcd7c1df91606480830192602092919082900301818787803b158015610bb757600080fd5b505af1158015610bcb573d6000803e3d6000fd5b505050506040513d6020811015610be157600080fd5b50519050610bee816111de565b5050505050565b60035461010090046001600160a01b031681565b600454610c475760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff166002811115610c5a57fe5b14610c965760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b158015610ce957600080fd5b505afa158015610cfd573d6000803e3d6000fd5b505050506040513d6020811015610d1357600080fd5b50516001600160a01b031614610d5a5760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b610d62611126565b610d9d5760405162461bcd60e51b815260040180806020018281038252603381526020018061135c6033913960400191505060405180910390fd5b806001600160a01b038116610de35760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b6000546001546001600160a01b03908116911614610e47576008546001600160a01b03828116911614610e475760405162461bcd60e51b815260040180806020018281038252603b8152602001806113ef603b913960400191505060405180910390fd5b610e50826111de565b5050565b6006546001600160a01b031681565b610e6b6110fe565b610ea65760405162461bcd60e51b81526004018080602001828103825260428152602001806114596042913960600191505060405180910390fd5b600454610ee45760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff166002811115610ef757fe5b14610f335760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b158015610f8657600080fd5b505afa158015610f9a573d6000803e3d6000fd5b505050506040513d6020811015610fb057600080fd5b50516001600160a01b031614610ff75760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b6001600160a01b03821661103c5760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b6001600160a01b0381166110815760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03167f69e959981ba8324fe4ac2cc8441dfcac87573494c77536baaf7acee6c51b7b6d60405160405180910390a3600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6001546001600160a01b031681565b600080546001600160a01b0316611113611122565b6001600160a01b031614905090565b3390565b6001546000906001600160a01b0316611113611122565b6001600160a01b0381166111825760405162461bcd60e51b81526004018080602001828103825260298152602001806112d86029913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f076c2af751a37d3871addf9a6fdedbaf3827fb030bf1d04c43a1421420fcc98790600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460ff19166002179081905560045460405190916001600160a01b038481169261010090920416907fcf31cbde15ae9b0bfff5442830acd2764cad8da3394f189aa10c5a932e5b295590600090a46003546004805460408051632142170760e11b815230938101939093526001600160a01b03858116602485015260448401929092525161010090930416916342842e0e9160648082019260009290919082900301818387803b15801561129457600080fd5b505af1158015610bee573d6000803e3d6000fdfe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329486173486f6c6465723a206e657720686f6c64657220697320746865207a65726f20616464726573735469746c65457363726f773a20436f6e7472616374206973206e6f7420686f6c64696e67206120746f6b656e5469746c65457363726f773a20436f6e7472616374206973206e6f7420746865206f776e6572206f6620746f6b656e486173486f6c6465723a206f6e6c792074686520686f6c646572206d617920696e766f6b6520746869732066756e6374696f6e5469746c65457363726f773a20436f6e7472616374206973206e6f7420696e207573655469746c65457363726f773a2042656e656669636961727920686173206e6f74206265656e20656e646f727365642062792062656e65666963696172795469746c65457363726f773a204e6577206f776e657220686173206e6f74206265656e20617070726f7665642062792062656e65666963696172795469746c65457363726f773a205472616e7366657272696e6720746f20307830206973206e6f7420616c6c6f7765644861734e616d656442656e65666963696172793a206f6e6c79207468652062656e6566696369617279206d617920696e766f6b6520746869732066756e6374696f6e5469746c65457363726f773a20486f6c64657220686173206e6f74206265656e20656e646f727365642062792062656e65666963696172795469746c65457363726f773a204f6e6c7920746f6b656e732066726f6d20707265646566696e656420746f6b656e2072656769737472792063616e2062652061636365707465645469746c65457363726f773a20436f6e747261637420686173206265656e2075736564206265666f7265a265627a7a723158206070f7c384fb31f8f87b3d5016a19b0b3eceedcbf17170e26d5898c072c0689464736f6c63430005100032455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e74657243616e6e6f742064657374726f7920746f6b656e3a20546f6b656e206e6f74206f776e656420627920746f6b656e2072656769737472794552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e657243616e6e6f742073656e6420746f6b656e3a20546f6b656e206e6f74206f776e656420627920746f6b656e2072656769737472794552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a723158206f886c1eef9335850c4f551735e50cb487d671725efac5d5959f1b32ef34b07364736f6c63430005100032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373";